home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Database / CardFile_Source / CardFile_BareBones / CardFileController.m < prev    next >
Encoding:
Text File  |  1993-11-24  |  2.5 KB  |  142 lines

  1. /*
  2.  *
  3.  * CardFileController.m
  4.  *
  5.  *    You may freely copy, distribute and reuse the code in this example.
  6.  *    NeXT disclaims any warranty of any kind, expressed or implied, as to
  7.  *    its fitness for any particular use.
  8.  *
  9.  */
  10.  
  11. #import "CardFileController.h"
  12.  
  13. @implementation CardFileController
  14.  
  15. - init
  16. {
  17.     [super init];
  18.     customerList = [[List alloc] init];
  19.     return self;
  20. }
  21.  
  22. - awakeFromNib
  23. {
  24.     [self addCustomer:self];
  25.     [[nameField window] makeKeyAndOrderFront:self];
  26.     return self;
  27. }
  28.  
  29. - free
  30. {
  31.     [customerList freeObjects];
  32.     [customerList free];
  33.     return [super free];
  34. }
  35.  
  36. - addCustomer:sender
  37. {
  38.     currentCustomer = [[Customer alloc] init];
  39.     [customerList addObject:currentCustomer];
  40.     [self updateInspector];
  41.     return self;
  42. }
  43.  
  44. - deleteCustomer:sender
  45. {
  46.     // XXX - probably should confirm this operation with the User
  47.     if (!currentCustomer) return self; // XXX - better to disable the menu item
  48.     
  49.     [customerList removeObject:currentCustomer];
  50.     [currentCustomer free];
  51.     [self firstCustomer];
  52.     return self;
  53. }
  54.  
  55. - nextCustomer:sender
  56. {
  57.     id  nextCustomer;
  58.     int customerIndex = [customerList indexOf:currentCustomer];
  59.     
  60.     if (customerIndex == NX_NOT_IN_LIST){
  61.         NXBeep();
  62.         return self;
  63.     }
  64.     nextCustomer = [customerList objectAt:(customerIndex + 1)];
  65.     if (!nextCustomer) {
  66.         NXBeep();
  67.         return self;
  68.     }
  69.     currentCustomer = nextCustomer;
  70.     [self updateInspector];
  71.     return self;
  72. }
  73.  
  74. - prevCustomer:sender
  75. {
  76.     id  prevCustomer;
  77.     int customerIndex = [customerList indexOf:currentCustomer];
  78.     
  79.     if (customerIndex == NX_NOT_IN_LIST){
  80.         NXBeep();
  81.         return self;
  82.     }
  83.     if (customerIndex == 0) {
  84.         NXBeep();
  85.         return self;
  86.     }
  87.     
  88.     prevCustomer = [customerList objectAt:(customerIndex - 1)];
  89.     if (!prevCustomer) 
  90.         return self;    // should also alert user that this is last
  91.     currentCustomer = prevCustomer;
  92.     [self updateInspector];
  93.     return self;
  94. }
  95.  
  96. - firstCustomer
  97. {
  98.     currentCustomer = [customerList objectAt:0];
  99.     if (!currentCustomer) {
  100.         [self clearInspector];
  101.         return self;
  102.     }
  103.     [self updateInspector];
  104.     return self;
  105. }
  106.  
  107. - nameChanged:sender
  108. {
  109.     [currentCustomer setCustomerName:[sender stringValue]];
  110.     return self;
  111. }
  112.  
  113. - uidChanged:sender
  114. {
  115.     [currentCustomer setCustomerUid:[sender intValue]];
  116.     return self;
  117. }
  118.  
  119. - updateInspector
  120. {
  121.     if (!currentCustomer) {
  122.         [self clearInspector];
  123.         return self;
  124.     }
  125.     [nameField setStringValue:[currentCustomer customerName]];
  126.     [uidField setIntValue:[currentCustomer customerUid]];
  127.     [nameField selectText:self];
  128.     return self;
  129. }
  130.  
  131. - clearInspector
  132. {
  133.     [nameField setStringValue: NULL];
  134.     [uidField setStringValue: NULL];
  135.     
  136.     [nameField selectText:self];
  137.     return self;
  138. }
  139.  
  140.  
  141. @end
  142.